package com.ymh.spring.advance.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;

import com.ymh.spring.advance.system.BlankDisc;

@Configuration
@PropertySource(value = "classpath:app.properties")
// 声明属性源
public class ExpressiveConfig {

	@Autowired
	Environment env;

	@Bean(name = "disc")
	public BlankDisc disc1() {
		return new BlankDisc(env.getProperty("disc.title"),
				env.getProperty("disc.artist")); // 检索属性值
	}

	@Bean
	public BlankDisc disc2() {
		return new BlankDisc(env.getProperty("disc.title", "Sgt"),
				env.getProperty("disc.artist", "U2")); // 检索属性值
	}

	@Bean
	public BlankDisc disc3() {
		return new BlankDisc(env.getRequiredProperty("disc.title"),
				env.getRequiredProperty("disc.artist"));
//		在这里，如果disc.title或disc.artist属性没有定义的话，将
//		会抛出IllegalStateException异常
	}
	
	
	@Bean
	public BlankDisc disc4(){
		boolean titleExists = env.containsProperty("disc.title");
		if(titleExists){
			return new BlankDisc(env.getProperty("disc.title"));
		}else{
			return new BlankDisc("default", "default");
		}
	}
	
}
